Systems and Methods for Providing Individual and/or Synchronized Virtual Tours through a Realm for a Group of Users

ABSTRACT

In accordance with one embodiment of the invention, a method coordinates experiences of a realm for a group of users, including at least an administrative user and at least one participating user. The method includes transmitting, from the server to an administrative user, a session identifier associated with the realm. The method also includes receiving, by the server, a user acceptance to join a session using the session identifier so that the at least one participating user can experience the realm. In response to receiving the acceptance, the method also includes transmitting to a computing device of the participating user, by the server, executable code including data describing a series of locations in the realm. The series of locations comprises at least a first location and a second location, and the first location is associated with a first panoramic image and the second location is associated with a second panoramic image. The executable code is configured to receive instructions from at least one computing device of at least one user within the group to display the realm at at least one selected location, and display, on the computing device, data corresponding to the realm at at least one of the locations selected by at least one of the users within the group.

TECHNICAL FIELD

The present invention relates to providing individual and/orsynchronized virtual tours through locations within a realm for a groupof users within a networked environment, and more particularly, toallowing users to either select their own locations or rely on otherusers to select locations for experiencing the realm.

BACKGROUND

Under conventional systems and methods, users examine a realm merely byviewing static images. A user cannot interact with the images, asidefrom selecting a particular image to view. Furthermore, if the images donot make the relationships between different locations of the realmclear, the user is left to envision how the locations connect to oneanother. For example, suppose a house hunter views a listing, whichprovides a group of images for a property. Each image may represent aroom from one particular point of view, but the image may neverthelessomit some information about the room, due to the limitations of thecamera that captured the image. Additionally, the house hunter may needto switch back and forth between images to determine how rooms relate toone another by, for example, matching features (e.g., picture windows,chandeliers) that appear in multiple images. Moreover, the house huntermay view the images on his or her own. Through conventional methods ofexperiencing realms, other parties, such as real estate agents, cannotshare the house hunter's experience of the realm and cannot control whatthe house hunter views. In this manner, each individual may have aunique, personal experience of the realm that is not readilycommunicated with others.

SUMMARY OF THE EMBODIMENTS

In accordance with one embodiment of the invention, a method coordinatesexperiences of a realm for a group of users, including at least anadministrative user and at least one participating user. The methodincludes transmitting, from the server to an administrative user, asession identifier associated with the realm. The method also includesreceiving, by the server, a user acceptance to join a session using thesession identifier so that the at least one participating user canexperience the realm. In response to receiving the acceptance, themethod also includes transmitting to a computing device of theparticipating user, by the server, executable code including datadescribing a series of locations in the realm. The series of locationscomprises at least a first location and a second location, and the firstlocation is associated with a first panoramic image and the secondlocation is associated with a second panoramic image. The executablecode is configured to receive instructions from at least one computingdevice of at least one user within the group to display the realm at atleast one selected location, and display, on the computing device, datacorresponding to the realm at at least one of the locations selected byat least one of the users within the group.

In some embodiments, the executable code is further configured toreceive instructions from the server regarding locations selected by auser within the group. Further, the method may include receiving, by theserver from the administrative user, a request to synchronize anexperience of the realm for the participating user with an experience ofthe realm for the administrative user. The request may include alocation in the realm selected by the administrative user. The methodmay include transmitting, by the server, the location in the realmselected by the administrative user to a computing device of theparticipating user. The location causes the executable code running onthe computing device of the participating user to display datacorresponding to the location selected by the administrative user.

The method may include transmitting, by the server to a computing deviceof the participating user, locations in the realm selected by the usersof the group. Additionally, the method may include receiving, by theserver from the administrative user, a request to synchronize anexperience of the realm for the participating user with an experience ofthe realm for the administrative user. In response to the request fromthe administrative user, the method may include transmitting, by theserver to the computing device of the participating user, an instructionto display data corresponding to the locations in the realm selected bythe administrative user.

The computing device of the participating user may create at least onevirtual image representing a view of the realm between a locationselected by the participating user and the location selected by theadministrative user. Also, the computing device may display datacorresponding to the virtual image and the location selected by theadministrative user to simulate motion in the realm from the locationselected by the participating user to the location selected by theadministrative user.

The method may include receiving, by the server from the computingdevice of the administrative user, an updated location selected by theadministrative user. The method may also include transmitting, by theserver to the computing device of the participating user, the updatedselected location so that the computing device of the participating userdisplays data corresponding to the updated selected location in therealm. In some embodiments, the instruction to synchronize theexperiences of the participating user and the administrative user causesthe computing device of the participating user to disregard instructionsfrom the participating user.

The method may include receiving, by the server from a first user in thegroup, a request to synchronize an experience of the realm for a seconduser in the group with an experience of the realm for the first user. Insome embodiments, the selected location in the realm includes a viewdirection.

The method may include receiving, by the server from an administrativeuser, a request to view a list of users who have joined the experienceof the realm. Also, the method may include transmitting, by the serverto a computing device of the administrative user, the list of users fordisplay.

In many embodiments, the method includes receiving, by the server fromthe administrative user, a request to view a history of selectedlocations in the realm for a user in the group of users. The method mayinclude transmitting, by the server to a computing device of theadministrative user, the history of selected locations in the realm forthe user.

The method may include receiving, by the server from the administrativeuser, a request to follow the view of the participating user. The methodmay also include sending, by the server to the computing device of theparticipating user, an instruction to provide, on a continual basis,updates on the location in the realm selected by the participating user.The method may further include forwarding, by the server to thecomputing device of the administrative user, the updated locationselected by the participating user. The updated location causes theexecutable code running on the computing device of the administrativeuser to display data corresponding to the realm at the updated selectedlocation of the participating user.

In some embodiments, the method also includes transmitting, by theserver to a computing device of the administrative user, locations inthe realm selected by the users of the group. The executable code on thecomputing device of the administrative user may be configured to receivea request to follow the view of the participating user and display datacorresponding to the locations in the realm received from the serverthat are selected by the participating user.

The method may include receiving, by the server from an administrativeuser, an instruction to display a second realm to the group of users.Additionally, the method may include transmitting, by the server to eachcomputing device for the group of users, executable code including datadescribing a series of locations in the second realm.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing features of embodiments will be more readily understood byreference to the following detailed description, taken with reference tothe accompanying drawings, in which:

FIG. 1 depicts a block diagram representing a tour platform including atleast one server that provides individual and synchronized experiencesof a realm for a group of users;

FIG. 2A is an exemplary flow diagram depicting the initiation of asession in which a group of users experience the same realm;

FIG. 2B is an exemplary flow diagram depicting the initiation of thesession of FIG. 2A, in which users bypass the server to update oneanother regarding their locations in the realm;

FIG. 3 depicts exemplary relationships between images in a set of imagesfor a realm;

FIG. 4A is an exemplary flow diagram depicting one user commanding andcontrolling the experience of the realm for another user;

FIG. 4B is an exemplary flow diagram depicting one user bypassing theserver to directly command and control the experience of the realm foranother user;

FIG. 5 is an exemplary flow diagram depicting the manner in which theimage data for one user is updated, based on the location of anotheruser;

FIG. 6A is an exemplary flow diagram depicting a user's selection of anew realm for a session, and the propagation of that realm to the otherusers in the group;

FIG. 6B is an exemplary flow diagram depicting the initiation of thesession of FIG. 6A, in which users bypass the server to update oneanother regarding their locations in the realm; and

FIG. 7 is an exemplary flow diagram for creating a session history inreal time.

DETAILED DESCRIPTION OF SPECIFIC EMBODIMENTS Definitions

A “realm” means a three-dimensional space. Parts of a realm need not becontiguous—realms may include discontinuities. While a realm mayrepresent an actual physical space, any part of a realm may beimaginary.

A “set” includes at least one member.

Systems and Methods for Enabling Shared Experiences of a Realm for Usersin a Group

The inventors have developed systems and methods that enable users in agroup to experience the same realm concurrently, and also tosynchronize, either by sharing or commanding and controlling, theirexperiences of the realm. The systems include a tour platform, with atleast one server. The tour platform stores sets of images, each setcorresponding to a different realm. A user selects a realm and creates asession for experiencing the realm. When other users join the session,the tour platform transmits code, which includes the set of images forthe realm, to the computing devices of the users. The devices store andexecute the code, thereby enable the user to interact with the images toexperience the realm.

Local execution of the code improves the speed, performance, and overallquality of the user's experiences. Moreover, this local executionenables the tour platform to synchronize experiences of the realm fortwo or more users efficiently simply by transmitting the locations ofinterest within the realm to the computing devices of the users, insteadof the full images corresponding to the locations. The users' computingdevices may process the locations in conjunction with the set of imagesfor the realm to identify the view (e.g., image data) to display to theuser. As a result, the systems and methods described herein decrease thelikelihood of disruption in a user's experience, due to errors in imagedata transmission or lapses in connectivity over the network.

FIG. 1 depicts a block diagram representing a tour platform 100including at least one server 105 that provides individual andsynchronized experiences of a realm for a group of users via each user'srespective computing device 110. Although operations described hereinare discussed with respect to the server 105, any given operation may beperformed by one or more servers in a group of servers.

The server 105 connects to the user's computing devices 110 over a widearea network 115. The server 105 stores sets of images, either on theserver 105 itself or on another entity (e.g., another server, a database106), and each set corresponding to a different realm. The server 105also stores code that, when executed on a computing device 110, enablesa user to interact with a set of images. In various embodiments, fromtheir computing devices 110, users may transmit sets of imagescorresponding to realms to the server 105 for storage (for the sake ofsimplicity, user activity discussed herein will be described inreference to the user initiating the activity, even though the user'scomputing device may perform the activity itself). The set of images mayinclude information such as the relationships between the images and thecriteria for switching from one image to another. Furthermore, any givenimage in the set may have embedded objects, which the user may interactwith.

FIG. 2A is an exemplary flow diagram depicting the initiation of asession in which a group of users experience the same realm. A user maysend a request to create a session to the server 105 (step 201). Therequest identifies at least one particular realm to associate with thesession, and as the session creator, the user has administrativeprivileges, described in further detail below (session creators are alsoreferred to herein as “administrative users”). If the request includesmore than one realm, the request identifies the first realm for thesession. The server 105 creates the session (step 205), and associatesthe administrative user and the realm(s) with the session.

The administrative user sends invitations to at least one other user tojoin the session (step 210). The invitations include an identifier forthe session, such as an alphanumeric code, and may include a uniformresource location (“URL”) for joining the session. In some embodiments,the administrative user sends the invitations to the server 105 (step215), and the server forwards the invitations to the users (step 220).Alternatively, the administrative user may send the invitations directlyto the computing devices of the users (step 220). A user may accept aninvitation to join a session (step 225) by, for example, accessing theURL in an invitation, which directs the computing device 110 of the userto the server 105. When the server 105 receives an acceptance of aninvitation, the server 105 adds the user to the session (step 230). Theserver 105 transmits the set(s) of images corresponding to the realm(s)associated with the session to the user, as well as executable code fordisplaying and interacting with the set(s) of images. The computingdevice 110 stores the set of images and executable code.

The computing device 110 of the user executes the code to begin theuser's experience of the realm (step 235), and to perform any of thesteps described herein. In some embodiments, each image in the set ofimages is a panoramic image. The computing device 110 displays imagedata from one panoramic image at a time. To provide a more naturalexperience for the user, the computing device 110 displays only a subsetof the panoramic image, which corresponds to the user's view of therepresented scene. Thus, any given subset of the panoramic image may beassociated with a unique view direction. Whenever the computing device110 loads a panoramic image from the set, the computing device 110 mayinitially display the panoramic image from a default view direction. Forexample, each image in the set may be stored in association with adefault view direction. Via the executable code, the computing device110 identifies a subset of the panoramic image to display, based on thedefault view direction. Thereafter, the user is allowed to change theview direction. For example, the user may drag the panoramic image topan to the left or right, or tilt upwards or downwards. In response tothe user control, the computing device 110 updates the view directionand the corresponding subset of the panoramic image to display.

Furthermore, the images in the set may be interrelated in apredetermined manner. Examples of such relationships are depicted inFIG. 3. The relationships constrain the sequence in which the user mayview the images for a realm. For example, when the computing device 110loads the set of images depicted in FIG. 3, the computing device 110 maydisplay the image labeled “1” first. If the user wishes to view anotherimage in the set, the user may only opt for image “2”. When thecomputing device 110 displays image “2”, the user is permitted to switchsolely to either image “1” or “3”. Should the user traverse the imagesto select image “7”, the user would be permitted to select image “6”,“8”, or “10” to view.

Moreover, in some embodiments, the user may not be permitted to changeimages unless the view direction for the displayed image encompasses apathway between the locations in the realm represented by the displayedimage and another image. For example, suppose images “1” and “2”represented adjacent rooms separated by a doorway. When the user isexploring the scene in image “1”, to provide a natural experience of therealm, the user is not be permitted to select image “2” unless the viewdirection for image “1” encompasses the door separating the rooms. Inthis manner, the user would not be permitted to select image “2” unlessthe view direction falls within a predetermined range of viewdirections, during which the door would be visible. In some embodiments,the computing device 100 would not display an icon, such as an arrow,for changing images until the view direction for the displayed imagemeets this criterion.

When the user sends the computing device 110 an instruction to displayanother image, the computing device 110 creates and displaystransitional images to simulate motion between the locations representedby the two images in the set. Alternatively, the server 105 may createthe transitional images and send them to the computing device 110 todisplay. Exemplary systems and methods for creating transitional imagesare described in application Ser. No. 11/271,159, which is incorporatedby reference in its entirety. The transitional images may represent thepathway between the view direction for the prior image, and a defaultview direction for the selected image, which may depend on the identityof the prior image. For example, an image may have multiple default viewdirections, and referring to FIG. 3, image “2” may have one default viewdirection if a user has selected the image from image “1” and anotherdefault view direction if a user has selected the image from image “3”.If a user is viewing image “1” and selects image “2”, the computingdevice 110 uses the current view direction for image “1” and the defaultview direction for image “2” when the user is transitioning from image“1”, and creates transition images to simulate motion between the twoimages.

Furthermore, in some embodiments, the images in the set are notinterrelated. Instead, the user may switch from one image in the set toany other image. For example, the user may invoke a control for changingimages, and in response, the computing device 110 may display thumbnailsrepresenting the images in the set. When the user selects a thumbnail,the computing device 110 may display the corresponding image. In theseembodiments, each image may include a default view direction, and thedevice 110 loads the image data for the default view direction. Becausethe images are not interrelated, the computing device 110 may switchfrom one image to another, instead of creating transitional images.Alternatively, the computing device 110 may transition between imagesby, for example, morphing one image into another. In some embodiments, auser may configure settings provided by the code to select the manner inwhich the computing device 110 displays images sequentially.

In various embodiments, as the user interacts with the set of images forthe realm, the computing device 110 sends updates about the state of theuser's location to the server 105 (step 240). For example, the computingdevice 110 may update the server 105 regarding the image on display andthe view direction therein. Each communication may include an identifierfor the session, an identifier for the user (e.g., the user's computingdevice 110), an identifier for the image in the set that is beingviewed, a yaw angle for the view direction, a pitch angle for the viewdirection, or any combination thereof. Thus, the server 105 receivesupdated locations in the realm for each user in the session, and theserver 105 may store the updates for each user. Alternatively, in thissituation and any others in which one computing device 110 sendsinformation to the server 105 for forwarding to other users, thecomputing device 110 may send updates directly to another user and/orall of the other users in the group. For example, in FIG. 2B, in analternative embodiment, the computing device 110 sends updates about thestate of the user's location directly to the other users in the group(step 240′), thereby bypassing the server 105.

In some embodiments, the server 105 transmits each update from each userto all of the other users in the group (step 245). Alternatively, theserver 105 may send updates solely to the administrative user. When theadministrative user receives this information, his or her computingdevice 110 may store the information, thereby saving a history of theusers' locations for the session (step 250).

Additionally, the tour platform 100 allows users to synchronize otherusers' experiences of the realm. In particular, any given user (alsoreferred to herein as the “commanding user”) may require another user(also referred to herein as the “following user”) to follow his or herexperience of the realm. During this period, the computing device 110 ofthe following user displays the realm according to the location of thecommanding user, and in some embodiments, the computing device 110 maybecome unresponsive to instructions from the following user to select animage or view direction in the realm. In some embodiments, a user mayelect to follow the experience of the realm for another user. Thus, theuser voluntarily becomes a “following user”, but may opt to stopfollowing at any time.

FIG. 4A is an exemplary flow diagram depicting one user commanding andcontrolling the experience of the realm for another user (also referredto herein as “refocusing” another user). On the computing device 110,the commanding user may invoke the option to command and control otherusers. For example, the computing device 110 may display an icon forcommanding and controlling other users' experience, and in response touser selection of this icon, the computing device 110 may display theusers in the group for the session. The commanding user may selectindividuals to be following users (step 405), and transmit aninstruction to command and control the experiences of the selected usersto the server 105 (step 410). In some embodiments, the administrativeuser may be allowed to command and control all of the other users in thegroup, but a non-administrative user may be permitted to command andcontrol a more limited number of users. The server 105 sendsinstructions to the selected users to follow the commanding user (step415). In FIG. 4B, in an alternative embodiment, the computing device 110transmits instructions to command and control directly to the computingdevices 110 of the selected users (step 410′), thereby bypassing theserver 105.

The computing device 110 of a following user may confirm receipt of theinstruction to the server 105 (step 420). At this time, the computingdevice 110 may display a notification to the following user that he orshe is now following the commanding user, and may also begindisregarding any commands that the following user attempts to input(e.g., selection of an image to view, selection of a view direction).The computing device 110 of a following user begins displaying the realmaccording to the commanding user's experience (step 425).

In some embodiments, the instruction from the server 105 includes alocation of the commanding user. In other embodiments, the computingdevice 110 obtains the location of the commanding user in the course ofthe commanding user's broadcast of his or her updated location. Asdescribed in reference to FIG. 2A, the server 105 may transmit eachupdate from each user to all of the other users in the group (step 245).When a user is not being commanded and controlled by another user, theuser's computing device 110 may ignore these updates, or store theupdates to create a local copy of the session history. However, when auser is selected as a following user, his or her computing device 110may begin using the updated information associated with the commandinguser to determine the image data in the set of images to display.

When a user becomes a following user, the computing device 110 may jumpto the location of the commanding user directly. Alternatively, thecomputing device 110 may create transitional images to simulate motionbetween the following and commanding users' locations. FIG. 5 is anexemplary flow diagram depicting the manner in which a following user'scomputing device 110 updates the image data that it displays, based onthe location of the commanding user. The computing device 110 mayexecute code to perform these steps when it first begins following thecommanding user, and any time the commanding user changes his or herlocation thereafter.

The computing device 110 of the following user may receive an update tothe commanding user's location (step 505) from the server 105. Theupdate may identify an image in the set and a view direction. Thecomputing device 110 compares the image in the update with the imagethat it is currently displaying. If the images are the same (step 510),using the view direction associated with the image data on display andthe newly received view direction, the computing device 110 creates anddisplays transitional images to simulate motion from the current viewdirection to the new one (step 515). The computing device 110 displaysthe image data for the newly received view direction until the device110 receives another update (step 520).

Alternatively, if the image identified in the update does not match theimage currently on display, the computing device 110 retrieves the newimage from memory, as well as a default view direction (step 525). Ifthe image has multiple default view directions, the computing device 110may select the default that is closest to the view direction in theupdate and display image data associated with this default. Thecomputing device 110 creates and displays transitional images tosimulate motion from the default view direction to the view direction inthe update (step 530). The computing device 110 displays the image datafor the updated view direction until the device 110 receives a furtherupdate (step 520).

The computing device 110 of a following user may continue performing thesteps in FIG. 5 until the commanding user releases control. While thecommanding user compels other users to following his or her experienceof the realm, his or her computing device 110 displays an icon forreleasing control of other users. If the commanding user selects thisicon, the computing device 110 sends an instruction to the server 105 toterminate the control over the other users, and the server 105 forwardsthe commands to the computing devices 110 of those users.

Upon receipt, a computing device 110 may display a notification to itsuser that the commanding user has terminated its control. The computingdevice 110 disregards location updates from the commanding user, andbecomes receptive to instructions from the user, again. In someembodiments, the computing device 110 remains at the most recentlocation selected by the commanding user, and allows the following userto navigate from there. Alternatively, the computing device 110 may havestored the most recently selected location of the following user priorto the instruction to follow the commanding user, and after thecommanding user releases control, the computing device 110 restores theselected location of the user.

Although a user may command and control other users' experiences of therealm, in some embodiments, the user may simply share his or herexperience, while allowing the other users to retain control. Thesharing user may perform similar steps to those described in FIG. 4, butwith instructions to share the user's experience with the targetedusers. The computing devices 110 of the recipients reserve an area ofthe display for depicting the experience of the sharing user (e.g., a“picture-in-picture” display), and the devices 110 execute code both forupdating the image data displayed in this reserved area, and updatingthe image data for locations selected by the users. The devices 110 maydownsample the images in the set to determine the image data to displayfor the experience of the sharing user, but process the images receivedfrom the server 105 to determine the image data to display for the userof the computing device 110.

Furthermore, a user may opt to follow another user. The computing device110 may include a control for following a user, and when this control isactivated, the device 110 displays a list of users to follow. Byselecting a user, the computing device 110 begins displaying image datacorresponding to the followed user's location, whether the device 110receives the location as part of the followed user's broadcast or sendsa request to the server 105 to receive the location of the followed userwhenever this location is updated. Moreover, the user can opt to eitherreplace the image data on its computing device 110 with the experienceof the followed user, or display the experience on a reserved area,thereby viewing different locations in the realm simultaneously. Whilethe user is following another user, the computing device 110 displays an“unfollow” control, whose selection reverts the display data to thatchosen by the user.

In some scenarios, the administrative user may wish to select adifferent realm for the session. For example, the administrative usermay be a real estate agent, and upon completing a tour of a propertywith a client, the real estate agent may wish to show another property.Alternatively, the client may express disinterest with a property, andthe parties may select another property to determine if that propertywill fit the client's needs more appropriately.

FIG. 6A is an exemplary flow diagram depicting the administrative user'sselection of a new realm for a session, and the propagation of thatrealm to the other users in the group. To select a new realm (step 605),the administrative user activates an icon on the computing device 110 tochange realms. The computing device 110 displays representations ofrealms for the session, such as thumbnails of the first images for eachof the realms. The administrative user selects one of the realms, andthe computing device 110 loads the set of images associated with theselected realm (step 610). The computing device 110 displays the firstimage in this set, based on the default view position for the imageand/or beginning of a tour of the new realm.

The computing device 110 sends an update to the server 105 regarding thenew realm for the session (step 615). The server 105 sends an update tothe other users in the group regarding the new realm for the session(step 620). In FIG. 6B, in an alternative embodiment, the computingdevice 110 send the update directly to the other users in the group(step 615′), thereby bypassing the server 105. When the other usersreceive this update, their computing devices 110 process the update(step 625), retrieve the set of images for the new realm from memory,and display the first image in this set (step 630).

Although the figure describes storing the sets of images for realms oncomputing devices 110 when the users join the session, in alternateembodiments, the users may be informed of realms for the session inreal-time, and obtain new sets of images from the server 105 wheneverthe administrative user selects a new realm for the experience. Forexample, when the computing devices 110 download the executable code,the code may identify the realms via alphanumeric identifiers, by way ofexample, but may not contain their sets of images (nevertheless, thecode may include the set for the first realm of the session). Toretrieve the set of images for a realm, the computing device 110 maysend a request with the alphanumeric identifier to the server 105, andin response, the server 105 may return the images. In this manner, thecomputing devices 110 do not store sets of images for realms until suchsets are needed.

Throughout any of these exemplary sessions, the server 105 may store auser history of the session. FIG. 7 is an exemplary flow diagram forcreating a session history in real time. The steps are similar to thosedescribed in FIG. 4. However, each time a user sends an updated locationto the server 105, the server 105 records the change (step 720), and mayalso store the time that the update was received. In this manner, theserver 105 creates a log of every location that each user visited, andthe length of time that the user remained at that location. Thus, theserver 105 may preserve the history of the session.

After the session ends, the administrative user may run analytics on thesession history to ascertain the other users' interests. For example,the administrative user may instruct the server 105 to determine thepercentage of time that the users spent in each image, and well asparticular sections of each image. If a realm corresponds to a house,analytics may reveal the percentage of time that a user spent in thekitchen, master bedroom, bathroom, and living room. Analytics may alsodetermine that, while the user was in the kitchen, the user spent partof the time examining the appliances, but a significant amount of timeenjoying the view into the backyard. Similarly, while the user remainedin the basement, the user may have spent little time looking at theheating system, but a significant amount of time looking at thefoundation. In this manner, the administrative user may discern itemsthat interest or concern a user based on their location, and selectother houses (and realms) accordingly.

The embodiments of the invention described above are intended to bemerely exemplary; numerous variations and modifications will be apparentto those skilled in the art. All such variations and modifications areintended to be within the scope of the present invention as defined inany appended claims.

What is claimed is:
 1. A method of coordinating experiences of a realmfor a group of users wherein the group includes at least anadministrative user and at least one participating user, the methodcomprising: transmitting, from the server to an administrative user, asession identifier associated with the realm; receiving, by the server,a user acceptance to join a session using the session identifier so thatthe at least one participating user can experience the realm; inresponse to receiving the acceptance, transmitting to a computing deviceof the participating user, by the server, executable code including datadescribing a series of locations in the realm, the series of locationscomprising at least a first location and a second location, wherein thefirst location is associated with a first panoramic image and the secondlocation is associated with a second panoramic image, wherein theexecutable code is configured to (1) receive instructions from at leastone computing device of at least one user within the group to displaythe realm at at least one selected location, and (2) display, on thecomputing device, data corresponding to the realm at at least one of thelocations selected by at least one of the users within the group.
 2. Themethod of claim 1, wherein the executable code is further configured to(3) receive instructions from the server regarding locations selected bya user within the group.
 3. The method of claim 1, further comprising:receiving, by the server from the administrative user, a request tosynchronize an experience of the realm for the participating user withan experience of the realm for the administrative user, the requestincluding a location in the realm selected by the administrative user;transmitting, by the server, the location in the realm selected by theadministrative user to a computing device of the participating user, thelocation causing the executable code running on the computing device ofthe participating user to display data corresponding to the locationselected by the administrative user.
 4. The method of claim 1, furthercomprising: transmitting, by the server to a computing device of theparticipating user, locations in the realm selected by the users of thegroup; receiving, by the server from the administrative user, a requestto synchronize an experience of the realm for the participating userwith an experience of the realm for the administrative user; in responseto the request from the administrative user, transmitting, by the serverto the computing device of the participating user, an instruction todisplay data corresponding to the locations in the realm selected by theadministrative user.
 5. The method of claim 3, wherein the computingdevice of the participating user creates at least one virtual imagerepresenting a view of the realm between a location selected by theparticipating user and the location selected by the administrative user,and displays data corresponding to the virtual image and the locationselected by the administrative user to simulate motion in the realm fromthe location selected by the participating user to the location selectedby the administrative user.
 6. The method of claim 4, wherein thecomputing device of the participating user creates at least one virtualimage representing a view of the realm between a location selected bythe participating user and the location selected by the administrativeuser, and displays data corresponding to the virtual image and thelocation selected by the administrative user to simulate motion in therealm from the location selected by the participating user to thelocation selected by the administrative user.
 7. The method of claim 3,further comprising: receiving, by the server from the computing deviceof the administrative user, an updated location selected by theadministrative user; and transmitting, by the server to the computingdevice of the participating user, the updated selected location so thatthe computing device of the participating user displays datacorresponding to the updated selected location in the realm.
 8. Themethod of claim 4, further comprising: receiving, by the server from thecomputing device of the administrative user, an updated locationselected by the administrative user; and transmitting, by the server tothe computing device of the participating user, the updated selectedlocation so that the computing device of the participating user displaysdata corresponding to the updated selected location in the realm.
 9. Themethod of claim 3, wherein the instruction to synchronize theexperiences of the participating user and the administrative user causesthe computing device of the participating user to disregard instructionsfrom the participating user.
 10. The method of claim 4, wherein theinstruction to synchronize the experiences of the participating user andthe administrative user causes the computing device of the participatinguser to disregard instructions from the participating user.
 11. Themethod of claim 1, further comprising: receiving, by the server from afirst user in the group, a request to synchronize an experience of therealm for a second user in the group with an experience of the realm forthe first user.
 12. The method of claim 1, wherein the selected locationin the realm includes a view direction.
 13. The method of claim 1,further comprising: receiving, by the server from an administrativeuser, a request to view a list of users who have joined the experienceof the realm; and transmitting, by the server to a computing device ofthe administrative user, the list of users for display.
 14. The methodof claim 1, further comprising: receiving, by the server from theadministrative user, a request to view a history of selected locationsin the realm for a user in the group of users; and transmitting, by theserver to a computing device of the administrative user, the history ofselected locations in the realm for the user.
 15. The method of claim 1,further comprising: receiving, by the server from the administrativeuser, a request to follow the view of the participating user; sending,by the server to the computing device of the participating user, aninstruction to provide, on a continual basis, updates on the location inthe realm selected by the participating user; forwarding, by the serverto the computing device of the administrative user, the updated locationselected by the participating user, the updated location causing theexecutable code running on the computing device of the administrativeuser to display data corresponding to the realm at the updated selectedlocation of the participating user.
 16. The method of claim 1, furthercomprising transmitting, by the server to a computing device of theadministrative user, locations in the realm selected by the users of thegroup, wherein the executable code on the computing device of theadministrative user is configured to (1) receive a request to follow theview of the participating user and (2) display data corresponding to thelocations in the realm received from the server that are selected by theparticipating user.
 17. The method of claim 1, further comprising:receiving, by the server from an administrative user, an instruction todisplay a second realm to the group of users; and transmitting, by theserver to each computing device for the group of users, executable codeincluding data describing a series of locations in the second realm. 18.A method of coordinating experiences of a realm for a group of userswherein the group includes at least an administrative user and at leastone participating user, the method comprising: transmitting, from theserver to an administrative user, a session identifier associated withthe realm; receiving, by the server, a user acceptance to join a sessionusing the session identifier so that the at least one participating usercan experience the realm; in response to receiving the acceptance,transmitting to a computing device of the participating user, by theserver, executable code including a set of panoramic images associatedwith the realm, wherein the executable code is configured to (1) receiveinstructions from at least one computing device of at least one userwithin the group to display the realm at at least one selected location,and (2) display, on the computing device, data from the set of panoramicimages corresponding to the at least one selected location.